<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // 群组:
    // 先匹配整个正则表达式,如果有匹配的内容,放到数组中 => 再将()内的子表达式依次匹配放到数组中

    // 数据解析: 
    //"?user=a123123&pwd=123123&phone=17386141517&email=123123@qq.com"  

    var str = "?user=a123123&pwd=123123&phone=17386141517&email=123123@qq.com"

    // var reg = /\w+=\w+/;
    var reg = /(\w+)=([^&]+)/g;

    // var arr = reg.exec(str);
    // console.log(arr);

    // var arr = reg.exec(str);
    // console.log(arr);

    // var arr = reg.exec(str);
    // console.log(arr);

    // var arr = reg.exec(str);
    // console.log(arr);

    // var arr = reg.exec(str);
    // console.log(arr);

    // var a = null;
    // if (a = 1) { // 先把1赋值给a => 再将a作为表达式

    // }

    var data = {};
    var arr = null;
    // 循环解析
    while (arr = reg.exec(str)) { //先解析一次 => 将解析结果赋值给arr => 作为表达式
        // 1. 解析成功 => [] 作为表达式=> true
        // 2. 解析失败 => null  作为表达式=> false
        var key = arr[1];
        var val = arr[2];
        data[key] = val;
    }
    console.log(data);


    // 解析过程中 要判断是否添加修饰符g => 保险
    // var data = {};
    // if (reg.global) {//全局匹配
    //     var arr = null;
    //     // 循环解析
    //     while (arr = reg.exec(str)) { //先解析一次 => 将解析结果赋值给arr => 作为表达式
    //         // 1. 解析成功 => [] 作为表达式=> true
    //         // 2. 解析失败 => null  作为表达式=> false
    //         var key = arr[1];
    //         var val = arr[2];
    //         data[key] = val;
    //     }
    // } else { //不是全局匹配 => 直接解析一次
    //     arr = reg.exec(str);
    //     if (arr) {
    //         var key = arr[1];
    //         var val = arr[2];
    //         data[key] = val;
    //     }
    // }
    // console.log(data);


</script>

</html>